package com.silence.gmall.product.domain.repository.impl;

import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.extension.repository.CrudRepository;
import com.silence.gmall.product.domain.entity.SkuSaleAttrValue;
import com.silence.gmall.product.domain.mapper.SkuSaleAttrValueMapper;
import com.silence.gmall.product.domain.repository.SkuSaleAttrValueRepository;
import com.silence.gmall.product.dto.ValueSkuJsonDto;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

/**
 * @Author silence
 * @Description 针对表【sku_sale_attr_value(sku销售属性值)】的数据库操作Repository实现
 * @Date 2025-08-17 16:28:16
 */
@Slf4j
@Repository
@RequiredArgsConstructor
public class SkuSaleAttrValueRepositoryImpl extends CrudRepository<SkuSaleAttrValueMapper, SkuSaleAttrValue>
    implements SkuSaleAttrValueRepository {

    /**
     * 获取同一个SPU下面的所有SKU组合
     *
     * @param spuId spuId
     * @return SPU下面的所有SKU组合 JSON 格式
     */
    @Override
    public String getSpuValuesSkuJson(Long spuId) {
        List<ValueSkuJsonDto> valueSkuJsonDtoList = baseMapper.getSpuValuesSkuJson(spuId);
        Map<String, Long> jsonMap = valueSkuJsonDtoList.stream()
                .collect(Collectors.toMap(ValueSkuJsonDto::getAttrValueConcat, ValueSkuJsonDto::getSkuId));
        return JSON.toJSONString(jsonMap);
    }
}